package redis.clients.jedis;

import java.util.ArrayList;
import java.util.List;


/**
 * Jedis AccessControlUser 是 Jedis Redis 客户端提供的一个类，用于表示访问控制用户。
 *
 * 在 Redis 中，访问控制列表（Access Control List，ACL）是一种用于限制对 Redis 实例的访问权限的方法。
 * 通过 ACL，管理员可以为每个用户分配不同的权限，例如只读、读写等。
 *
 * Jedis AccessControlUser 类提供了一些方法来获取访问控制用户的详细信息，例如：
 * getUser()：获取用户名；
 * getPassword()：获取密码；
 * getPermissions()：获取用户权限；
 * getHosts()：获取用户可以访问的主机列表；
 * getKeys()：获取用户可以访问的键列表。
 * 使用 Jedis AccessControlUser 类可以方便地解析访问控制列表，并提取出有用的信息。
 */
public class AccessControlUser {

  private final List<String> flags = new ArrayList<>();
  private final List<String> keys = new ArrayList<>();
  private final List<String> passwords = new ArrayList<>();
  private String commands;

  public AccessControlUser() {
  }

  public void addFlag(String flag) {
    flags.add(flag);
  }

  public List<String> getFlags() {
    return flags;
  }

  public void addKey(String key) {
    keys.add(key);
  }

  public List<String> getKeys() {
    return keys;
  }

  public void addPassword(String password) {
    passwords.add(password);
  }

  public List<String> getPassword() {
    return passwords;
  }

  public String getCommands() {
    return commands;
  }

  public void setCommands(String commands) {
    this.commands = commands;
  }

  @Override
  public String toString() {
    return "AccessControlUser{" + "flags=" + flags + ", keys=" + keys + ", passwords=" + passwords
        + ", commands='" + commands + '\'' + '}';
  }
}
